Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.04.2017, 01:36
Новичок на форуме
Отправить личное сообщение для Alina666 Посмотреть профиль Найти все сообщения от Alina666
 
Регистрация: 14.04.2017
Сообщений: 4

Подсветка активных меню при скролле
Всем привет) Есть меню сайта. При прокрутке страницы должны выделяться активные пункты меню. Следующий код работает, но есть один баг: когда нажимаешь на пункты меню и происходит переход на соответствующую страницу, то все работает нормально, но стоит перейти на главную страницу прокруткой (мышкой или через полосу прокрутки), как подсветка пункта меню главной страницы исчезает. И если снова на этот пункт нажать, то он опять будет подсвечиваться. Причем это происходит только с главной (самой первой) страницей. Может кто сможет решить проблему? Заранее спасибо!

// Cache selectors
var lastId,
  topMenu = $("#menu"),
  topMenuHeight = topMenu.outerHeight() + 15,
  // All list items
  menuItems = topMenu.find("a"),
  // Anchors corresponding to menu items
  scrollItems = menuItems.map(function() {
    var item = $($(this).attr("href"));
    if (item.length) {
      return item;
    }
  });

// Bind click handler to menu items
// so we can get a fancy scroll animation
menuItems.click(function(e) {
  var href = $(this).attr("href"),
    offsetTop = href === "#" ? 0 : $(href).offset().top - topMenuHeight + 1;
  $('html, body').stop().animate({
    scrollTop: offsetTop
  }, 300);
  e.preventDefault();
});

// Bind to scroll
$(window).scroll(function() {
  // Get container scroll position
  var fromTop = $(this).scrollTop() + topMenuHeight;

  // Get id of current scroll item
  var cur = scrollItems.map(function() {
    if ($(this).offset().top < fromTop)
      return this;
  });
  // Get the id of the current element
  cur = cur[cur.length - 1];
  var id = cur && cur.length ? cur[0].id : "";

  if (lastId !== id) {
    lastId = id;
    // Set/remove active class
    menuItems
      .parent().removeClass("active")
      .end().filter("[href='#" + id + "']").parent().addClass("active");
  }
});


.container {
	width: 1100px;
}
#logo {
	margin-top: -7px;
	height: 35px;
	width: 100px;
}

.navbar a {
	margin-top: 20px;
}

.navbar {
    background-color: rgba(255, 255, 255, 0);
    border: rgba(255, 255, 255, 0);
}

.navbar-inverse .navbar-nav > .active > a, 
.navbar-inverse .navbar-nav > .active > a:hover, 
.navbar-inverse .navbar-nav > .active > a:focus {
    background-color: rgba(255, 255, 255, 0);
}

.navbar-inverse .navbar-nav > .active {
    background-color: #7fc400;
    border-radius: 0 0 5px 5px;
}


<header>
      <nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
        <div class="container">
          <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
            <ul class="nav navbar-nav navbar-right" id="menu"> 
              <li class="active"><a href="#home">ГЛАВНАЯ</a></li>
              <li><a href="#features">ПРЕИМУЩЕСТВА</a></li>
              <li><a href="#catalog">КАТАЛОГ</a></li>
            </ul>
          </div>
        </div>
      </nav>
    </header>

    <!-- Home -->
    <section id="home">
      <img src="http://karriarstudenten.se/wp-content/uploads/2016/03/nature-sky-sunset-man.jpeg">
    </section>
    
    <!-- Features -->
    <section id="features">
        <img src="http://karriarstudenten.se/wp-content/uploads/2016/03/nature-sky-sunset-man.jpeg">
    </section>

    <!-- Catalog -->
    <section id="catalog">
      <img src="http://karriarstudenten.se/wp-content/uploads/2016/03/nature-sky-sunset-man.jpeg">
    </section>

Последний раз редактировалось Alina666, 17.04.2017 в 14:16.
Ответить с цитированием
  #2 (permalink)  
Старый 17.04.2017, 10:05
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,149

Сообщение от Alina666
$("#top-menu"),
где?
Ответить с цитированием
  #3 (permalink)  
Старый 17.04.2017, 14:17
Новичок на форуме
Отправить личное сообщение для Alina666 Посмотреть профиль Найти все сообщения от Alina666
 
Регистрация: 14.04.2017
Сообщений: 4

Исправила. Просто сюда пример общий написала, тк в моем сайте кода больше, вот и забыла исправить. Но проблема все равно не в этом.
Ответить с цитированием
  #4 (permalink)  
Старый 17.04.2017, 14:28
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,149

Сообщение от Alina666
Но проблема все равно не в этом.
сделайте полноценный макет ... в том что вы предоставили проблемы нет.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как скрыть меню при клике Giorgi jQuery 2 04.12.2015 19:45
Исчезновение меню при клике на ссылку wiserfild Элементы интерфейса 4 24.10.2015 19:50
Появление блока при скролле вверх dizent Общие вопросы Javascript 2 18.09.2015 06:16
При на ведении меню мигает и открываються все пункты Dark19 Элементы интерфейса 4 23.12.2014 22:14
Закрепление блока при скролле с проигрыванием анимаци VBeregovoy Элементы интерфейса 0 10.04.2014 11:19